Cache-Control Headers এর ব্যবহার

Java Technologies - অ্যাপাচি এইচটিটিপি ক্লায়েন্ট (Apache HTTP Client) HTTP Caching এবং Conditional Requests |
160
160

Cache-Control হেডার HTTP প্রোটোকলে একটি গুরুত্বপূর্ণ ভূমিকা পালন করে, যা ক্লায়েন্ট বা প্রক্সি সার্ভারকে নির্দেশ দেয় কিভাবে ক্যাশিং করা হবে এবং কখন ক্যাশড ডেটা ব্যবহার করা যাবে বা পুনরায় ফেচ করতে হবে। Apache HTTP Client-এ Cache-Control headers ব্যবহার করা হলে এটি HTTP রিকোয়েস্ট এবং রেসপন্সে ক্যাশিং কনফিগারেশন করার জন্য ব্যবহৃত হয়।

Cache-Control হেডারের ধরন:

Cache-Control হেডারে বিভিন্ন ডিরেকটিভ থাকতে পারে যেমন:

  • no-cache: কনটেন্টকে ক্যাশে রাখা যাবে না, এবং প্রতিটি রিকোয়েস্টের জন্য নতুন করে সার্ভার থেকে ফেচ করতে হবে।
  • no-store: কোন ক্যাশিংই করা যাবে না। রেসপন্স এবং রিকোয়েস্ট উভয়ই ক্যাশে সংরক্ষিত হবে না।
  • max-age: ক্যাশে রাখা কনটেন্টটির জন্য সর্বোচ্চ সময়কাল (সেকেন্ডে) সেট করা হয়। উদাহরণস্বরূপ, max-age=3600 মানে হলো এক ঘণ্টা।
  • public: রেসপন্সটি পাবলিক ক্যাশে (যেমন প্রক্সি সার্ভার) ক্যাশ করা যেতে পারে।
  • private: রেসপন্সটি শুধুমাত্র ক্লায়েন্টের জন্য ক্যাশ করা যেতে পারে, কিন্তু প্রক্সি সার্ভারে নয়।

Apache HTTP Client-এ Cache-Control হেডার ব্যবহার:

Apache HTTP Client এ Cache-Control হেডার যোগ করতে, HttpRequest এ হেডার সেট করতে হয়। নিচে একটি উদাহরণ দেখানো হয়েছে, যেখানে Cache-Control হেডার দিয়ে রিকোয়েস্ট কনফিগার করা হচ্ছে।

উদাহরণ: Cache-Control হেডার যোগ করা

import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.client5.http.impl.classic.methods.HttpGet;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
import org.apache.hc.core5.util.EntityUtils;
import org.apache.http.client.config.RequestConfig;

import java.io.IOException;

public class HttpClientWithCacheControl {
    public static void main(String[] args) {
        // HTTP ক্লায়েন্ট কনফিগারেশন তৈরি করা
        try (CloseableHttpClient httpClient = HttpClients.createDefault()) {

            // HTTP GET রিকোয়েস্ট তৈরি
            HttpGet request = new HttpGet("https://your-api-endpoint.com");

            // Cache-Control হেডার যোগ করা
            request.setHeader("Cache-Control", "max-age=3600");  // 1 ঘণ্টা ক্যাশে রাখবে

            // রিকোয়েস্ট পাঠানো এবং রেসপন্স প্রাপ্তি
            try (CloseableHttpResponse response = httpClient.execute(request)) {
                String responseBody = EntityUtils.toString(response.getEntity());
                System.out.println("Response: " + responseBody);

                // Cache-Control হেডার থেকে রেসপন্সে ক্যাশিং সম্পর্কিত তথ্য বের করা
                String cacheControl = response.getFirstHeader("Cache-Control").getValue();
                System.out.println("Cache-Control in response: " + cacheControl);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  1. Cache-Control Header (Request): request.setHeader("Cache-Control", "max-age=3600") লাইনটি দিয়ে ক্লায়েন্টের রিকোয়েস্টে Cache-Control হেডার সেট করা হয়েছে, যেখানে max-age=3600 মানে হলো রিকোয়েস্টের জন্য 1 ঘণ্টা পর্যন্ত ক্যাশড রেসপন্স ব্যবহার করা যাবে।
  2. Cache-Control Header (Response): রেসপন্স থেকে Cache-Control হেডারটি প্রাপ্ত করা হয়েছে এবং তা কনসোলে প্রিন্ট করা হয়েছে, যাতে আপনি রেসপন্সে কোন ক্যাশিং ডিরেকটিভ ব্যবহৃত হচ্ছে তা দেখতে পারেন।

Cache-Control হেডার কনফিগারেশন উদাহরণ:

  • No-cache: যখন আপনি চান যে সার্ভার থেকে নতুন রেসপন্স প্রতি রিকোয়েস্টে ফেচ করা হোক (কিন্তু রিকোয়েস্ট এবং রেসপন্স ক্যাশ করা যেতে পারে), তখন আপনি Cache-Control: no-cache ব্যবহার করবেন।
  • No-store: যখন আপনি চান রেসপন্স কোনোভাবেই ক্যাশ করা না হোক (যেমন সেনসিটিভ তথ্য), তখন আপনি Cache-Control: no-store ব্যবহার করবেন।
  • Private: ক্লায়েন্টের জন্য ক্যাশড করা যাবে, কিন্তু এটি প্রক্সি সার্ভারে ক্যাশ করা যাবে না। উদাহরণ: Cache-Control: private, max-age=600
  • Public: ক্যাশ সার্ভার বা প্রক্সি সার্ভারে ক্যাশ করা যেতে পারে। উদাহরণ: Cache-Control: public, max-age=86400 (24 ঘণ্টা)।

Cache-Control- এর অন্যান্য গুরুত্বপূর্ণ ডিরেকটিভ:

  • must-revalidate: যখন ক্যাশড ডেটা প্রাচীন হয়ে যায়, তখন নতুন ডেটা সার্ভার থেকে পুনরায় ফেচ করতে হবে।
  • proxy-revalidate: প্রক্সি সার্ভার ক্যাশড ডেটা পুনরায় যাচাই করবে।

সারাংশ:

Apache HTTP Client-এ Cache-Control হেডারের মাধ্যমে ক্যাশিং কনফিগার করা হয়। এটি সার্ভার থেকে প্রাপ্ত রেসপন্সের ক্যাশিং আচরণ নিয়ন্ত্রণ করতে সহায়ক। হেডারে বিভিন্ন ডিরেকটিভ যেমন max-age, no-cache, private, এবং public ব্যবহার করা যেতে পারে। এই হেডারের মাধ্যমে আপনি রিকোয়েস্ট এবং রেসপন্সের ক্যাশিং কৌশল নির্ধারণ করতে পারেন, যা কর্মক্ষমতা উন্নত করতে এবং অপ্রয়োজনীয় নেটওয়ার্ক ট্র্যাফিক কমাতে সাহায্য করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion